package com.zhu.pre.mapper;

import com.sanploy.common.domain.AttrClass;
import com.sanploy.common.domain.GoodsAttr;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * Created by yingzhi zhu on 2017/9/17.
 * @author yingzhi zhu
 * 商品规格数据库操作接口
 */
@Mapper
public interface GoodsAttrMapper {

    /**
     * 通过goodsId 查找商品规格
     * @param goodsId 商品id
     * @return 商品规格实体类集合
     */
    List<GoodsAttr> findGoodsAttrByGoodsId(@Param("goods_id") Long goodsId);

    /**
     * 添加商品规格 List
     * @param list 商品规格实体类集合
     */
    void insertAttr(List<GoodsAttr> list);

    /**
     * 添加商品规格 Bean
     * @param goodsAttr 商品规格实体类
     */
    void insertOne(GoodsAttr goodsAttr);

    /**
     * 更新商品规格
     * @param goodsAttr 商品规格实体类
     * @return 数据库影响行数
     */
    int updateAttr(GoodsAttr goodsAttr);

    /**
     * 通过id数组查找的对应商品规格
     * @param attrIdArr 商品规格参数id数组
     * @return 商品规格实体 集合
     */
    List<GoodsAttr> findAttrArr(@Param("goods_attr_arr") String[] attrIdArr);

    /**
     * 通过id查找商品规格实体
     * @param id 商品规格id
     * @return 商品规格实体
     */
    GoodsAttr findGoodsAttrOne(@Param("id") Long id);

    /**
     * 插入商品规格的分类 如颜色分类，商品规格
     * @param name 商品规格名
     * @param sortOrder 排序
     * @return 数据库影响行数
     */
    @Insert("INSERT INTO attr_class (name,sort_order) VALUES (#{name},#{sort_order})")
    int insertGoodsAttrClass(@Param("name") String name, @Param("sort_order") int sortOrder);

    /**
     * 查找所有商品规格的分类
     * @return 商品规格实体 集合
     */
    @Select("SELECT * FROM attr_class")
    List<AttrClass> findAttrClassAll();

    /**
     * 通过id查找商品规格的分类实体
     * @param id 商品规格的分类id
     * @return 商品规格的分类实体
     */
    @Select("SELECT * FROM attr_class WHERE id=#{id}")
    AttrClass findAttrClassOne(@Param("id") Long id);

    /**
     * 通过id修改商品规格的分类的名字
     * @param name 新的商品规格的分类名
     * @param sortOrder 排序号
     * @param id 商品规格的分类id
     * @return 数据库影响行数
     */
    @Update("UPDATE attr_class SET name=#{name},sort_order=#{sort_order} WHERE id=#{id}")
    int updateAttrClassOne(@Param("name") String name, @Param("sort_order") int sortOrder, @Param("id") Long id);

}
